# 函数的结果如下
# def 函数名（参数列表）:
#     函数体

# demo1 无参方法
def hello():
    print('hello world!')

hello()

# demo2 含参数的方法
def hello_user(name):
    print('hello, {}'.format(name) )
name = 'lee'
# 如果字符串是标题化的(见 title())则返回 True，否则返回 False
print(name.istitle())
# str的title()返回"标题化"的字符串,就是说所有单词都是以大写开始，其余字母均为小写
print(name.title().istitle())
hello_user(name)


# demo3 默认值
def hello_man(name = 'earth man'):
    print('hello, {}'.format(name))
hello_man()

# demo4 返回值
def hello_guy(name):
    print('hello, {}'.format(name))
    return 'earth man'
name =  'lee'
name1 = hello_guy(name)
print('hello, {}'.format(name1))

#  返回一个字典
def add_person(name, score):
    person = {'name':name, 'score':score}
    return person

name = 'lee'
score = '100'
person_list = add_person(name, score)
print(person_list)

# strings, tuples, 和 numbers 是不可更改的对象，而 list,dict 等则是可以修改的对象。

# demo 5  在函数中修改列表
print("demo 5")

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = []
print(list1)
print(list2)
def func1(list1, list2):
    while list1:
        curr = list1.pop()
        list2.append(curr)

print('------after------')
func1(list1, list2)
print(list1)
print(list2)

# demo 6  禁止函数修改列表
print('demo 6')
# function_name(list_name[:]) 通过这样的方式就不会对列表进行修改了

list1 = ['physics', 'chemistry', 1997, 2000]
list2 = []
print(list1)
print(list2)

print('------after------')
# 在使用的刚刚func1的时候，不想对输入的参数的list1进行修改，
# 可以在输入参数的时候写为list1[:], 这样在运行玩程序后不对的list1进行修改
func1(list1[:], list2)
print(list1)
print(list2)
        
# demo 7 传递任意数量的参数

def hello_unum(*name):
    print('name:{}'.format(name))
num1 = 'lee'
num2 = 'tee'
hello_unum(num1, num2)


